// 流程实例对象
export interface InstanceVo {
  id: string
  businessKey: string
  businessStatus: string
  businessStatusName: string
  name: string
  category: string
  categoryName: string
  startTime: string
  endTime: string
  durationInMillis: number
  startUserId: string
}

// 流程实例查询参数
export interface ProcessInstanceQuery {
  pageNo: number
  pageSize: number
  name?: string
  processDefinitionKey?: string
  businessKey?: string
  category?: string
  startUserId?: string
  status?: string
}

// 分页结果
export interface PageResult<T> {
  records: T[]
  total: number
  size: number
  current: number
}

// 任务对象
export interface TaskVo {
  id: string
  taskDefinitionKey: string
  name: string
  createTime: Date
  endTime: Date
  durationInMillis: number
  assignee: string
  status: string
  reason: string
  operationType: string // 操作类型
  processDefinitionId: string
  buttonConfigs: ButtonConfig[]
}

// 任务查询参数
export interface ProcessTaskQuery {
  pageNo: number
  pageSize: number
  name?: string
  category?: string
  userId?: string
}

// BPMN模型视图对象
export interface BpmnModelViewVo {
  // 基本信息
  processInstance: InstanceVo
  tasks: TaskVo[]
  bpmnXml: string
  // 进度信息
  // 只包括 UserTask
  unfinishedTaskActivityIds: Set<string>
  // 包括 UserTask、Gateway 等，不包括 SequenceFlow
  finishedTaskActivityIds: Set<string>
  // 只包括 SequenceFlow
  finishedSequenceFlowActivityIds: Set<string>
  // 只包括 UserTask
  rejectedTaskActivityIds: Set<string>
}

/**
 * 按钮配置类型
 */
export interface ButtonConfig {
  /** 按钮ID */
  id: string
  /** 按钮名称 */
  name: string
  /** 按钮类型 */
  type: string
  /** 排序号 */
  sort: number
  /** 是否启用 */
  enabled: boolean
}
